package com.finanzas.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;

import com.finanzas.dao.LdapSocioDao;
import com.finanzas.dao.LdapSocioRelDao;
import com.finanzas.dao.UnidadHLdapDao;
import com.finanzas.dao.SocioDao;
import com.finanzas.entity.LdapSocio;
import com.finanzas.entity.LdapSocioRel;
import com.finanzas.entity.UnidadH;
import com.finanzas.entity.UnidadHLdap;
import com.finanzas.entity.Socio;

/**
 * Servlet implementation class LdapSocioServlet
 */
@WebServlet("/LdapSocioServlet")
public class LdapSocioServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private static final Integer GUARDAR_LDAP_SOCIO = 1;   
	private static final Integer CONSULTAR_USUARIO_VALIDO = 2;
	private static final Integer GUARDAR_SOCIO = 3;
	
    @EJB
    private LdapSocioDao ldapDao;
    @EJB
    private SocioDao socioDao;
    @EJB
    private LdapSocioRelDao ldapRelDao;
    @EJB
    private UnidadHLdapDao proyectoLdapDao;
    
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LdapSocioServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	@SuppressWarnings("unchecked")
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter out = response.getWriter();
		int op = 0;
		op = Integer.parseInt(request.getParameter("operacion"));
		if(op==GUARDAR_LDAP_SOCIO){
			String usuario   = request.getParameter("user");
			String password  = request.getParameter("pass");
		    String password2 = request.getParameter("pass2");
		    String nombre    = request.getParameter("nombre");
		    String apPaterno = request.getParameter("apPaterno");
		    String apMaterno = request.getParameter("apMaterno");
		    String mail = request.getParameter("email");
		    String fechaNacimiento = request.getParameter("fechaNacimiento");
		    Long idSexo = Long.parseLong(request.getParameter("genero"));
		    Long idRol  = Long.parseLong(request.getParameter("rol"));
		    
		    if(password.equals(password2)){
			  LdapSocio ldapSocio = new LdapSocio();
			  ldapSocio.setUser(usuario);
			  ldapSocio.setPass(password);
			  ldapSocio.setIdRol(idRol);
			  UnidadH idProyecto = new UnidadH();
			  idProyecto.setIdProyecto(1L); 
			  Calendar fechaN = Calendar.getInstance();
			  String[] valores = fechaNacimiento.split("/");
			  int year  = Integer.parseInt(valores[2]);
			  int date  = Integer.parseInt(valores[1]);
			  int month = Integer.parseInt(valores[0])-1;
			  fechaN.set(year, month, date);
			  Socio socio = new Socio();
			  socio.setNombreSocio(nombre);
			  socio.setApellidoPaterno(apPaterno);
			  socio.setApellidoMaterno(apMaterno);
			  socio.setFechaAlta(new Date());
			  socio.setIdComision(null);
			  socio.setIdEstatus(4L);
			  socio.setIdProyecto(1L);
			  socio.setIdSexo(idSexo);
			  socio.setNumeroLista(1L);
		      socio.setMail(mail);
			  socio.setFechaNacimiento(fechaN.getTime());
			  //***************************************************************
			  ldapDao.guardar(ldapSocio);
			  socioDao.guardar(socio);
			  //***************************************************************
			  LdapSocioRel ldapSocioRel = new LdapSocioRel();
			  ldapSocioRel.setIdLdapSocio(ldapSocio.getIdLdapSocio());
			  ldapSocioRel.setIdSocio(socio.getIdSocio());
			  ldapRelDao.guardar(ldapSocioRel);
			  //***************************************************************
			  UnidadHLdap proyectoLdap = new UnidadHLdap();
			  proyectoLdap.setIdProyecto(socio.getIdProyecto());
			  proyectoLdap.setIdUserLdap(ldapSocio.getIdLdapSocio());
			  proyectoLdapDao.guardar(proyectoLdap);
			out.println("Usuario Creado");
		    }
		}
		
		if(op==CONSULTAR_USUARIO_VALIDO){
			String usuario = request.getParameter("user");
			LdapSocio socio = new LdapSocio();
			socio.setUser(usuario);
			Boolean flag =ldapDao.consultarUsuarioLDAP(socio);
			JSONObject respuesta = new JSONObject();
			respuesta.put("val", new Boolean(flag));
			out.println(respuesta);
		}if(op==GUARDAR_SOCIO){
			 String nombre    = request.getParameter("nombreSocio");
			 String apPaterno = request.getParameter("apellidoPaterno");
			 String apMaterno = request.getParameter("apellidoMaterno");
			 String mail = request.getParameter("email");
			 String fechaNacimiento = request.getParameter("fechaNacimiento");
			 Long idSexo = Long.parseLong(request.getParameter("sexo"));
			 Long idComision  = Long.parseLong(request.getParameter("comision"));
			 Long numeroLista = Long.parseLong(request.getParameter("numeroLista"));
			 Long idEstatusSocio = Long.parseLong(request.getParameter("estatusSocio"));
			 Long idProyecto = Long.parseLong(request.getParameter("proyecto"));
			 
			 Calendar fechaN = Calendar.getInstance();
			 String[] valores = fechaNacimiento.split("/");
			 int year  = Integer.parseInt(valores[2]);
			 int date  = Integer.parseInt(valores[1]);
			 int month = Integer.parseInt(valores[0])-1;
			 fechaN.set(year, month, date);
			 Socio socio = new Socio();
			 socio.setNombreSocio(nombre);
			 socio.setApellidoPaterno(apPaterno);
			 socio.setApellidoMaterno(apMaterno);
			 socio.setFechaAlta(new Date());
			 socio.setIdComision(idComision);
			 socio.setIdEstatus(idEstatusSocio);
			 socio.setIdProyecto(idProyecto);
			 socio.setIdSexo(idSexo);
			 socio.setNumeroLista(numeroLista);
		     socio.setMail(mail);
			 socio.setFechaNacimiento(fechaN.getTime());
			 //***************************************************************
			 socioDao.guardar(socio);
			//****************************************************************
			 out.println("Socio Guardado");
		}
		out.close();
	}
}
